package com.netease.dylan;

import java.io.IOException;
import java.net.InetSocketAddress;

import net.spy.memcached.CASValue;
import net.spy.memcached.MemcachedClient;

public class TestMemcached {
	public static void main(String[] args) throws IOException {
		//test1();
		//testNonCAS();
		testCAS();
	}
	
	public static void test1() throws IOException {
		MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
		for (int i = 1; i < 10; i++) {
			cache.set("T0001" + i, 3600, new User(i + ""));
		}
		User myObject = (User) cache.get("T00011");
		System.out.println("Get object from mem :" + myObject);
	}
	
	public static void testNonCAS() throws IOException {
		MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));

		cache.set("x", 1800, "Love");

		String obj1 = (String) cache.get("x");
		String obj2 = (String) cache.get("x");
		obj2 = "Michael";

		cache.set("x", 1800, obj2);
		System.out.println("Non-CAS 2:\t" + obj2);
		System.out.println("Non-CAS 1:\t" + obj1);
	}
	
	public static void testCAS() throws IOException {
		MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));  
        
        cache.set("y", 1800, "Love");  
  
        CASValue casValue1 = cache.gets("y");
        CASValue casValue2 = cache.gets("y");
        cache.cas("y", casValue2.getCas(), casValue2.getValue());

        System.out.println("CAS 2:\t" + casValue2.getCas());
        System.out.println("Value 2:\t" + casValue2.getValue());

        System.out.println("CAS 1:\t" + casValue1.getCas());
        System.out.println("Value 1:\t" + casValue1.getValue());
	}
}
